import { reqGetSearchInfo } from "@/api"
//search模块的小仓库
const state = {
  //仓库初始状态
  searchList: {}
}
const mutations = {
  GETSEARCHLIST(state,searchList){
    state.searchList = searchList;

  }

}
const actions = {
  //获取搜索模块数据
  async getSearchList({ commit }, params = {}) {
    //当前这个函数只要派发这个action,一定会发请求获取数据
    //当前这个reqGetSearchInfo函数在调用获取服务器数据的时候,至少传递一个空对象
    //params形参:是当用户派发action的时候,第二个参数传递过来的,如果派发的时候不传递,params就是一个空对象
    let result = await reqGetSearchInfo(params);
    if (result.code === 200) {
      commit("GETSEARCHLIST", result.data);
    } else {
      return Promise.reject(new Error("faile"));
    }
  }
}

//计算属性,在项目当中,为了简化数据而生:简化仓库中的数据
//可以把我们将来在组件当中需要用的数据简化一下[将来组件在获取数据的时候就方便了]
const getters = {
  //当前形参state,当前仓库中的state
  //state.searchList这个属性值是一个对象,里面有很多属性
    goodsList(state){
      //这样写是有问题的,如果服务器数据回来的时候,没有这个属性值,会报错
      return state.searchList.goodsList|| []; 
    }
    ,
    trademarkList(state){
      //这样写是有问题的,如果服务器数据回来的时候,没有这个属性值,会报错
      return state.searchList.trademarkList|| [] ;
    },
    attrsList(state){
      //这样写是有问题的,如果服务器数据回来的时候,没有这个属性值,会报错
      return state.searchList.attrsList|| [];
    },

}

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
}